// 生成器函数

function * foo() { 
  console.log('start')

  try {
    const res = yield 'foo'
    console.log(res)
  } catch (error) {
    console.log(error)
  }
  
}

const generator = foo()

const result = generator.next() // 调用next foo 才会执行 一直执行到 yield 返回 yield 后的值
console.log(result) // { value: 'foo', done: false }

generator.next('bar') // 'bar' next 参数 作为yield 语句的返回值

generator.throw(new Error('Generator error')) // Error: Generator error 抛出一个异常